package com.csun.cmny.provider.service;

import com.csun.cmny.base.dto.LoginAuthDto;
import com.csun.cmny.core.support.IService;
import com.csun.cmny.provider.model.domain.OmcReturnFeeConfig;
import com.csun.cmny.provider.model.dto.check_in.CheckInDaysDto;
import com.csun.cmny.provider.model.dto.old_leave.OldLeaveDaysDto;
import com.csun.cmny.provider.model.dto.old_out.OldOutDaysDto;
import com.csun.cmny.provider.model.dto.revise.ReviseDaysDto;
import com.csun.cmny.provider.model.vo.check_in.CheckInDaysVo;
import com.csun.cmny.provider.model.vo.cycle.CycleDaysVo;
import com.csun.cmny.provider.model.vo.old_leave.OldLeaveDaysVo;
import com.csun.cmny.provider.model.vo.old_out.OldOutDaysVo;
import com.csun.cmny.provider.model.vo.revise.ReviseDaysVo;

import java.util.Date;

public interface OmcReturnFeeConfigService extends IService<OmcReturnFeeConfig> {

    /**
     * 保存
     * @param: [convert, loginAuthDto]
     * @return: java.lang.Integer
     */
    Integer saveReturnFeeConfig(OmcReturnFeeConfig convert, LoginAuthDto loginAuthDto);

    /**
     * 根据groupId查询
     * @param: [groupId]
     * @return: com.csun.cmny.provider.model.domain.OmcReturnFeeConfig
     */
    OmcReturnFeeConfig selectByGroupId(Long groupId);

    /**
     * 根据入院日期计算入住月剩余缴纳天数
     *
     * @param checkInDaysDto    the check in days dto
     *
     * @return  the check in days vo
     */
    CheckInDaysVo queryCheckInDaysVo(CheckInDaysDto checkInDaysDto);

    /**
     * 根据回院日期计算请假退费周期数
     *
     * @param oldLeaveDaysDto   the old leave days dto
     *
     * @return  the old leave days vo
     */
    OldLeaveDaysVo queryOldLeaveDaysVo(OldLeaveDaysDto oldLeaveDaysDto);

    /**
     * 根据日期和机构Id查询周期缴费配置信息
     *
     * @param date      the date
     * @param groupId   the group id
     *
     * @return  the cycle days vo
     */
    CycleDaysVo queryCycleDaysVo(Date date, Long groupId);

    /**
     * 根据调整日期计算补缴天数
     *
     * @param reviseDaysDto the revise days dto
     *
     * @return  the revise days vo
     */
    ReviseDaysVo queryReviseDaysVo(ReviseDaysDto reviseDaysDto);

    /**
     * 根据出院日期计算退费天数 （补缴天数）
     *
     * @param oldOutDaysDto the old out days dto
     *
     * @return  the old out days vo
     */
    OldOutDaysVo queryOldOutDaysVo(OldOutDaysDto oldOutDaysDto);
}
